package com.ysd.lis.entity.lab;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ysd.lis.entity.BaseEntity;
import com.ysd.lis.util.compare.Compare;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @author Cfz
 * @since 2023-12-26
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("LAB_MAININFO")
public class LabMaininfoQuery extends BaseEntity {

    private static final long serialVersionUID = 1L;
    /**
     * 报告单元
     */
    @Compare("报告单元")
    @TableField("RPT_GROUP")
    private String rptGroup;

    /**
     * 报告单元名称
     */
    @Compare("报告单元名称")
    @TableField(exist = false)
    private String rptGroupNa;
    @Compare("报告单元顺序")
    @TableField(exist = false)
    private String rptGroupSeq;

    /**
     * 检验日期
     */
    @Compare("报告单元名称")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(fill = FieldFill.UPDATE)
    private Timestamp sampleda;

    /**
     * 标本号
     */
    @Compare("报告单元名称")
    @TableField("SAMPLE_NO")
    private String sampleNo;

    /**
     * 加急急诊标志 0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_URGENT")
    private Integer isUrgent;

    /**
     * 申请号、条码号
     */
    @Compare("报告单元名称")
    @TableField("REQ_NO")
    private String reqNo;

    /**
     * 申请时间
     */
    @Compare("报告单元名称")
    @TableField("REQ_TIME")
    private Timestamp reqTime;

    /**
     * 样本类型编号
     */
    @Compare("报告单元名称")
    @TableField("SAMPLE_TYPE")
    private String sampleType;

    /**
     * 标本量
     */
    @Compare("报告单元名称")
    @TableField("QUANTITY")
    private BigDecimal quantity;

    /**
     * 费别
     */
    @Compare("报告单元名称")
    @TableField("FEE_TYPE")
    private String feeType;

    /**
     * 申请科室编号
     */
    @Compare("报告单元名称")
    @TableField("REQ_DEPT")
    private String reqDept;

    /**
     * 病区代码
     */
    @Compare("报告单元名称")
    @TableField("REQ_WARD")
    private String reqWard;

    /**
     * 申请医生编号
     */
    @Compare("报告单元名称")
    @TableField("REQ_DOCTOR")
    private String reqDoctor;

    /**
     * 检验目的，如肝功，肾功，血糖
     */
    @Compare("报告单元名称")
    @TableField("REQ_PURPOSE")
    private String reqPurpose;

    /**
     * 检验目的
     */
    @Compare("报告单元名称")
    @TableField("TEST_PURPOSE")
    private String testPurpose;

    /**
     * 复查标本号
     */
    @Compare("报告单元名称")
    @TableField("RE_SAMPLE_NO")
    private String reSampleNo;

    /**
     * 病人类型  1门诊、2急诊、3住院、4体检等 (数据字典:PATTYPE)
     */
    @Compare("报告单元名称")
    @TableField("PAT_TYPE")
    private String patType;

    /**
     * 病历号
     */
    @Compare("报告单元名称")
    @TableField("PAT_NO")
    private String patNo;

    /**
     * 病人姓名
     */
    @Compare("报告单元名称")
    @TableField("PAT_NA")
    private String patNa;

    /**
     * 姓名拼音码
     */
    @Compare("报告单元名称")
    @TableField("PAT_PY_NAME")
    private String patPyName;

    /**
     * 性别  1男、2女、3不详
     */
    @Compare("报告单元名称")
    @TableField("SEX")
    private String sex;

    /**
     * 证件类型 来自字典
     */
    @Compare("报告单元名称")
    @TableField("ID_TYPE")
    private String idType;

    /**
     * 身份证号
     */
    @Compare("报告单元名称")
    @TableField("ID_NO")
    private String idNo;

    /**
     * 社会保险号码
     */
    @Compare("报告单元名称")
    @TableField("SIN")
    private String sin;

    /**
     * 床号
     */
    @Compare("报告单元名称")
    @TableField("BED_NO")
    private String bedNo;

    /**
     * 年龄
     */
    @Compare("报告单元名称")
    @TableField("AGE")
    private Integer age;

    /**
     * 年龄单位
     */
    @Compare("报告单元名称")
    @TableField("AGE_UNIT")
    private String ageUnit;

    /**
     * 二级年龄
     */
    @Compare("报告单元名称")
    @TableField("SEC_AGE")
    private Integer secAge;

    /**
     * 二级年龄单位
     */
    @Compare("报告单元名称")
    @TableField("SEC_AGE_UNIT")
    private String secAgeUnit;

    /**
     * 联系电话
     */
    @Compare("报告单元名称")
    @TableField("TEL_NO")
    private String telNo;

    /**
     * 联系人(病人家属)
     */
    @Compare("报告单元名称")
    @TableField("CONTACTER")
    private String contacter;

    /**
     * 生理周期
     */
    @Compare("报告单元名称")
    @TableField("PHY_CYCEL")
    private String phyCycel;

    /**
     * 哺乳期
     */
    @Compare("报告单元名称")
    @TableField("LACTATION")
    private String lactation;

    /**
     * 妊娠期
     */
    @Compare("报告单元名称")
    @TableField("GESTATION")
    private String gestation;

    /**
     * 孕周数
     */
    @Compare("报告单元名称")
    @TableField("GESTATION_WEEK")
    private String gestationWeek;

    /**
     * 孕次数
     */
    @Compare("报告单元名称")
    @TableField("GESTATION_TIMES")
    private String gestationTimes;

    /**
     * 孕期
     */
    @Compare("报告单元名称")
    @TableField("GESTATION_STAGE")
    private String gestationStage;

    /**
     * 临床诊断
     */
    @Compare("报告单元名称")
    @TableField("DIAGNOSE")
    private String diagnose;

    /**
     * 备注
     */
    @Compare("报告单元名称")
    @TableField("DESCRIPTION")
    private String description;

    /**
     * 检验医生编号        一般保存的是检验科登录代码，一般从用户名PUB_USER表中的YGDM
     */
    @Compare("报告单元名称")
    @TableField("TEST_DOCTOR")
    private String testDoctor;

    /**
     * 检验时间（上机时间）
     */
    @Compare("报告单元名称")
    @TableField("TEST_TIME")
    private Timestamp testTime;

    /**
     * 是否审核    如：0未审核、1初审、2审核，保存的是0，1，2 stateNa
     */
    @Compare("报告单元名称")
    @TableField("IS_CHK")
    private BigDecimal isChk;

    /**
     * 审核医生编号    一般保存的是检验科审核登录代码，一般从用户名PUB_USER表中的YGDM
     */
    @Compare("报告单元名称")
    @TableField("CHK_DOCTOR")
    private String chkDoctor;

    /**
     * 审核时间
     */
    @Compare("报告单元名称")
    @TableField("CHK_TIME")
    private Timestamp chkTime;

    /**
     * 是否复核  0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_RE_CHK")
    private Integer isReChk;


    /**
     * 初审医生编号    一般保存的是检验科审核登录代码，一般从用户名PUB_USER表中的YGDM
     */
    @Compare("报告单元名称")
    @TableField("FIRST_CHK_DOCTOR")
    private String firstChkDoctor;

    /**
     * 初审时间
     */
    @Compare("报告单元名称")
    @TableField("FIRST_CHK_TIME")
    private Timestamp firstChkTime;


    /**
     * 复核医师编号
     */
    @Compare("报告单元名称")
    @TableField("RE_CHK_DOCTOR")
    private String reChkDoctor;

    /**
     * 复核日期
     */
    @Compare("报告单元名称")
    @TableField("RE_CHK_TIMT")
    private Timestamp reChkTimt;

    /**
     * 是否打印  0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_PRINT")
    private Integer isPrint;

    /**
     * 打印人编号
     */
    @Compare("报告单元名称")
    @TableField("PRINT_DOCTOR")
    private String printDoctor;

    /**
     * 打印时间  默认为首次打印日期
     */
    @Compare("报告单元名称")
    @TableField("PRINT_TIME")
    private Timestamp printTime;

    /**
     * 打印次数
     */
    @Compare("报告单元名称")
    @TableField("PRINT_COUNT")
    private BigDecimal printCount;

    /**
     * 是否发布   0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_PUBLISH")
    private Integer isPublish;

    /**
     * 采样医生编号
     */
    @Compare("报告单元名称")
    @TableField("SAMPLING_DOCTOR")
    private String samplingDoctor;

    /**
     * 采样时间
     */
    @Compare("报告单元名称")
    @TableField("SAMPLING_TIME")
    private Timestamp samplingTime;

    /**
     * 采集部位
     */
    @Compare("报告单元名称")
    @TableField("SAMPLING_SITE")
    private String samplingSite;

    /**
     * 标本特征
     */
    @Compare("报告单元名称")
    @TableField("TRAITS")
    private String traits;

    /**
     * 签收人编号
     */
    @Compare("报告单元名称")
    @TableField("SIGNER_DOCTOR")
    private String signerDoctor;

    /**
     * 签收时间
     */
    @Compare("报告单元名称")
    @TableField("SIGN_TIME")
    private Timestamp signTime;

    /**
     * 双向标志    0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_DOUBLE")
    private Integer isDouble;

    /**
     * 是否危急值  0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_ALARM")
    private Integer isAlarm;

    /**
     * 是否自助打印  0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_AUTO_PRINT")
    private Integer isAutoPrint;

    /**
     * 自助机打印时间
     */
    @Compare("报告单元名称")
    @TableField("AUTO_PRINT_TIME")
    private Timestamp autoPrintTime;

    /**
     * 是否锁定   0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_LOCK")
    private Integer isLock;

    /**
     * 是否作废   0否  1 是
     */
    @Compare("报告单元名称")
    @TableField("IS_CANCEL")
    private Integer isCancel;

    /**
     * 报警结果   仪器接口、流水线接口时会用到，写入该标本的报警信息。
     */
    @Compare("报告单元名称")
    @TableField("ALARM_RESULT")
    private String alarmResult;

    /**
     * 阳性结果标志，显示文本
     */
    @Compare("报告单元名称")
    @TableField("POSITIVE_FLAG")
    private String positiveFlag;


    /**
     * 备注1
     */
    @Compare("报告单元名称")
    @TableField("REMARK1")
    private String remark1;

    /**
     * 备注2
     */
    @Compare("报告单元名称")
    @TableField("REMARK2")
    private String remark2;

    /**
     * 备注3
     */
    @Compare("报告单元名称")
    @TableField("REMARK3")
    private String remark3;

    /**
     * 备注4
     */
    @Compare("报告单元名称")
    @TableField("REMARK4")
    private String remark4;

    /**
     * 仪器调用接口执行标志 0 否 1 是
     */
    @Compare("报告单元名称")
    @TableField("EXECUTE_FLAG")
    private String executeFlag;

    /**
     * 是否纳入质量指标
     */
    @Compare("是否纳入质量指标")
    @TableField("IS_INCINTO_QI")
    private Integer isIncintoQi;

    /**
     * 取消审核医师
     */
    @Compare("取消审核医师")
    @TableField("UNCHK_DOCTOR")
    private String unChkDoctor;

    /**
     * 取消审核时间
     */
    @Compare("取消审核时间")
    @TableField("UNCHK_TIME")
    private Timestamp unchkTime;

    /**
     * 取消审核原因
     */
    @Compare("取消审核原因")
    @TableField("UNCHK_REASON")
    private String unchkReason;

    @TableField(exist = false)
    private List<LabRptresult> resultList;

    @TableField(exist = false)
    private String sampleDaStr;

    /**
     * 报告单元-业务类型
     */
    @TableField(exist = false)
    private String businessType;

    /**
     * 样本类型名称
     */
    @TableField(exist = false)
    private String sampleTypeNa;

    /**
     * 申请科室名称
     */
    @TableField(exist = false)
    private String reqDeptNa;

    /**
     * 病人类型
     */
    @TableField(exist = false)
    private String patTypeNa;

    /**
     * 性别
     */
    @TableField(exist = false)
    private String sexNa;

    /**
     * 证件类型
     */
    @TableField(exist = false)
    private String idTypeNa;


    /**
     * 申请医生名称
     */
    @TableField(exist = false)
    private String reqDoctorNa;


    /**
     * 检验医生名称
     */
    @TableField(exist = false)
    private String testDoctorNa;

    /**
     * 审核医生名称
     */
    @TableField(exist = false)
    private String chkDoctorNa;

    /**
     * 授权后消审医生编号
     */
//    @TableField(exist = false)
//    private String unChkDoctor;

    /**
     * 授权后消审医生名称
     */
    @TableField(exist = false)
    private String unChkDoctorNa;

    /**
     * 复核医师名称
     */
    @TableField(exist = false)
    private String reChkDoctorNa;

    /**
     * 打印人名称
     */
    @TableField(exist = false)
    private String printDoctorNa;

    /**
     * 采样医生名称
     */
    @TableField(exist = false)
    private String samplingDoctorNa;

    /**
     * 签收人名称
     */
    @TableField(exist = false)
    private String signerDoctorNa;

    /**
     * 顺序号（做排序使用）
     */
    @TableField(exist = false)
    private Integer seqNo;

    /**
     * 快速过滤条件
     * value: 0, '全部'
     * value: 1, label: '已审核'
     * value: 2,  label: '未审核'
     * value: 3, label: '已初审'
     * value: 4, label: '已打印'
     * value: 5, label: '未打印'
     * value: 6, label: '已审核已打印'
     * value: 7, label: '已审核未打印'
     * value: 8, label: '未审核已打印'
     * value: 9, label: '未审核未打印'
     * value: 10, label: '初审已打印'
     * value: 11, label: '初审未打印'
     */
    @TableField(exist = false)
    private Integer stateCode;


    /**
     * 只查询我的报告 【0：否   1：是】
     */
    @TableField(exist = false)
    private Integer isSelf;

    @TableField(exist = false)
    private String testTimeS;
    @TableField(exist = false)
    private String testTimeE;
    @TableField(exist = false)
    private String chkTimeS;
    @TableField(exist = false)
    private String chkTimeE;
    @TableField(exist = false)
    private String reqPurposeId;
    @TableField(exist = false)
    private Boolean isFilter;
    @TableField(exist = false)
    private Boolean isToday;
    @TableField(exist = false)
    private String reqMainId;

    @TableField(exist = false)
    private List<LabMaininfoCancleaudit> cancleAuditList;

}
